//package com.wbk.lotterysystemsystemservice.controller;
//
//import com.coolgua.common.bean.ApiCode;
//import com.coolgua.common.bean.ApiResult;
//import com.coolgua.common.exception.ApiException;
//import com.coolgua.common.exception.TokenException;
//import com.coolgua.common.exception.UnBindException;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.http.converter.HttpMessageNotReadableException;
//import org.springframework.validation.BindException;
//import org.springframework.validation.FieldError;
//import org.springframework.web.HttpMediaTypeNotSupportedException;
//import org.springframework.web.HttpRequestMethodNotSupportedException;
//import org.springframework.web.bind.MethodArgumentNotValidException;
//import org.springframework.web.bind.MissingServletRequestParameterException;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.RestControllerAdvice;
//
//import java.nio.file.AccessDeniedException;
//
///*******************************************************************************
// * @project: competition
// * @package: com.coolgua.config.exceptionHandler
// * @author: wbk
// * @created: 2021/4/25
// * @purpose:
// ******************************************************************************/
//@RestControllerAdvice
//@Slf4j
//public class GlobalExceptionHandler {
//
//    /**
//     * Api业务异常
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(ApiException.class)
//    public ApiResult handleTokenAuthException(ApiException e) {
//        log.error("业务异常", e);
//        return ApiResult.fail(e.getResultCode()).setMessage(e.getMessage());
//    }
//
//    /**
//     * 无效的token
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(TokenException.class)
//    public ApiResult handleTokenException(TokenException e) {
//        log.error("无效的token");
//        return ApiResult.fail(ApiCode.TOKEN_ERROR);
//    }
//
//    /**
//     * 未绑定到用户
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(UnBindException.class)
//    public ApiResult handleUnBindException(UnBindException e) {
//        log.error("当前登录的微信用户未绑定到系统用户");
//        return ApiResult.fail(ApiCode.LOGIN_PHONE_NOT_BIND);
//    }
//
//    @ExceptionHandler(AccessDeniedException.class)
//    public ApiResult handleAccessDeniedException(AccessDeniedException e) {
//        log.error("不允许访问", e.getMessage());
//        return ApiResult.fail(ApiCode.PERMISSION_DENIED);
//    }
//
//    /**
//     * 参数错误
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler({MethodArgumentNotValidException.class, BindException.class, MissingServletRequestParameterException.class})
//    public ApiResult handleMethodArgumentNotValidException(Exception e) {
//        log.error("参数检验失败", e);
//        if (e instanceof MethodArgumentNotValidException) {
//            // raw下验证未通过, @RequestBody时发生
//            FieldError fieldError = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError();
//            return ApiResult.fail(ApiCode.PARAMETER_ERROR, fieldError.getDefaultMessage());
//        } else if (e instanceof BindException) {
//            // x-www-form-urlencoded验证未通过，表单校验异常
//            FieldError fieldError = ((BindException) e).getBindingResult().getFieldError();
//            return ApiResult.fail(ApiCode.PARAMETER_ERROR, fieldError.getDefaultMessage());
//        } else {
//            return ApiResult.fail(ApiCode.PARAMETER_ERROR, e.getMessage());
//        }
//    }
//
//    /**
//     * 400
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(HttpMessageNotReadableException.class)
//    public ApiResult handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
//        log.error("参数解析失败", e);
//        return ApiResult.fail(ApiCode.ERROR_400004);
//    }
//
//    /**
//     * 405
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
//    public ApiResult handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
//        log.error("不支持的请求方式", e);
//        return ApiResult.fail(ApiCode.ERROR_400005);
//    }
//
//    /**
//     * 不支持的媒体格式
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(HttpMediaTypeNotSupportedException.class)
//    public ApiResult handleHttpMediaTypeNotSupportedException(HttpMediaTypeNotSupportedException e) {
//        log.error("不支持的媒体类型", e);
//        return ApiResult.fail(ApiCode.ERROR_400006);
//    }
//
//    /**
//     * 其它未知异常
//     *
//     * @param e
//     * @return
//     */
//    @ExceptionHandler(Exception.class)
//    public ApiResult handlerException(Exception e) {
//        log.error("未知异常", e);
//        return ApiResult.fail(ApiCode.ERROR);
//    }
//}
